<?php
//include_once "../funciones/fpdf_1.7/fpdf.php";
include_once "../funciones/fpdf_rotate.php";
include_once "filtro_cabecera.php";
include_once "../funciones/funciones_php.php";
include_once "../funciones/code128.class.php";
conectar();

/**
 *
 *@description Crea ticket para el sobre
 *@param objeto FPDF $pdf objeto FPDF
 *@param int $cantidad cantidad total de cajas
 *@param int $saltoVertical distancia del salto hacia abajo
 *@param int $saltoHorizontal distancia del salto hacia la derecha
 *@param String $codigo codigo de barras de la encomienda
 *@param int $idOrden numero de orden de flete
 *
 */

function getTicketCaja($pdf , $cantidad , $saltoVertical , $saltoHorizontal, $codigo , $idOrden , $filaDatos , $tipoEncomienda , $j , $numFactura)
{
    //Guarda datos de destino
    $clNom =  $filaDatos['clnom'];
    $clDir =  $filaDatos['cldir'];
    $clRut =  $filaDatos['clrut'];
    $clComuna =  $filaDatos['clcomuna'];
    $coRut =  $filaDatos['corut'];
    $coNom =  $filaDatos['conom']. " " . $filaDatos['conape'];
    $coDir =  $filaDatos['codir'] . " " . $filaDatos['connumdir'] . " " . $filaDatos['numdepto'];
    $coTel =  $filaDatos['cotel'];
    $coComuna =  $filaDatos['cocomuna'];  
    
    if($tipoEncomienda == 1)
    {
        $tipo = "Caja";
    }
    elseif($tipoEncomienda == 2)
    {
        $tipo = "Sobre";
    }
    elseif($tipoEncomienda == 3)
    {
        $tipo = "Valija";
    }
    elseif($tipoEncomienda == 4)
    {
        $tipo = "Factura";
    }
    
    //AGREGA UNA NUEVA HOJA
    $pdf->AddPage('P',array(100,130));
    $pdf->SetFont('Arial','B',10);
    
    //rectangulo borde del ticket
    $pdf->Rect(5 + $saltoHorizontal, 5 + $saltoVertical, 90, 120 , 'D');  
                        
                       
    //Crea codigo de barras para el ticket
    $barcode = new phpCode128($codigo, 75, '../funciones/arial.ttf', 10);
    $barcode->setEanStyle(false);
    $barcode->setBorderSpacing(0);
    $barcode->setBorderWidth(0);
    $barcode->setAutoAdjustFontSize( false );
    $barcode->saveBarcode('temp/'.$codigo.".png");
    
    //pega la imagen del codigo de barras en el PDF
    $pdf->Image('temp/'.$codigo.".png", 6 + $saltoHorizontal, 6 + $saltoVertical, 30, 0, "", "");
    
    //Borra la imagen del codigo de barra
    unlink('temp/'.$codigo.".png");
    
    //IMPRIME TITULO DE ORIGEN Y DESTINO
    $pdf->SetXY(5, 25);
    $pdf->Cell(90, 5, 'ORIGEN:', 1, 1, 'L');
   
    $pdf->SetXY(5, 65);
    $pdf->Cell(90, 5, 'DESTINO:', 1, 0, 'L');   
    $pdf->SetXY(5, 95);
    $pdf->Cell(90, 5, 'DESCRIPCION:', 1, 0, 'L');   
    
    
    
    
    $pdf->SetFont('Arial','B',8);
    //DATOS DE ORIGEN
    $pdf->SetXY(5 + $saltoHorizontal , 30 + $saltoVertical);
    $pdf->MultiCell( 80,4, $coNom ,0,"L",0 );
    $pdf->SetX(5 + $saltoHorizontal);
    $pdf->MultiCell( 80,4, $coDir ,0,"L",0 );
    $pdf->SetX(5 + $saltoHorizontal);
    $pdf->MultiCell( 80,4, $coComuna ,0,"L",0 );
    $pdf->SetX(5 + $saltoHorizontal);
    $pdf->MultiCell(80,4, "Rut: " . $coRut ,0,"L",0);
    $pdf->SetX(5 + $saltoHorizontal);
    $pdf->MultiCell(80,4, "Fono: " . $coTel ,0,"L",0);
    
    //Datos de Destino                    
    $pdf->SetXY(5 + $saltoHorizontal , 70 + $saltoVertical);
    $pdf->MultiCell( 80,4, $coNom ,0,"L",0 );
    $pdf->SetX(5 + $saltoHorizontal);
    $pdf->MultiCell( 80,4, $coDir ,0,"L",0 );
    $pdf->SetX(5 + $saltoHorizontal);
    $pdf->MultiCell( 80,4, $coComuna ,0,"L",0 );
    $pdf->SetX(5 + $saltoHorizontal);
    $pdf->MultiCell(80,4, "Rut: " . $coRut ,0,"L",0);
    $pdf->SetX(5 + $saltoHorizontal);
    $pdf->MultiCell(80,4, "Fono: " . $coTel ,0,"L",0);
    
    //DATOS DE DESCRIPCION
    $pdf->SetXY(5, 100);
    //$pdf->Text(20 + $saltoHorizontal , 40 + $saltoVertical ,$idOrden);
    $pdf->Text(5 + $saltoHorizontal , 110 + $saltoVertical , $tipo );
    
    if($tipoEncomienda == 4)
    {
        $pdf->Text(20 + $saltoHorizontal, 110 + $saltoVertical , "N?: " . $numFactura );
    }
    else
    {
        $pdf->Text(20 + $saltoHorizontal, 110 + $saltoVertical ,($j + 1) . "/" . $cantidad );
    }
                        
}
  
function getTicketSobre($pdf , $cantidad , $saltoVertical , $saltoHorizontal , $codigo , $idOrden , $filaDatos , $tipoEncomienda , $j , $numFactura)
{
    
    //Guarda datos de destino
    $clNom =  $filaDatos['clnom'];
    $clDir =  $filaDatos['cldir'];
    $clRut =  $filaDatos['clrut'];
    $clComuna =  $filaDatos['clcomuna'];
    $coRut =  $filaDatos['corut'];
    $coNom =  $filaDatos['conom']. " " . $filaDatos['conape'];
    $coDir =  $filaDatos['codir'] . " " . $filaDatos['connumdir'] . " " . $filaDatos['numdepto'];
    $coTel =  $filaDatos['cotel'];
    $coComuna =  $filaDatos['cocomuna']; 
    
    if($tipoEncomienda == 1)
    {
        $tipo = "Caja";
    }
    elseif($tipoEncomienda == 2)
    {
        $tipo = "Sobre";
    }
    elseif($tipoEncomienda == 3)
    {
        $tipo = "Valija";
    }
    elseif($tipoEncomienda == 4)
    {
        $tipo = "Factura";
    }
    
    $pdf->AddPage('L',array(100,60));
    
    //rectangulo borde del ticket
    $pdf->Rect(5 + $saltoHorizontal, 5 + $saltoVertical, 90, 40 , 'D');
    
                       
    //Crea codigo de barras para el ticket
    $barcode = new phpCode128($codigo, 65, '../funciones/arial.ttf', 7);
    $barcode->setEanStyle(false);
    $barcode->setBorderSpacing(0);
    $barcode->setBorderWidth(0);
    $barcode->setAutoAdjustFontSize( false );
    $barcode->saveBarcode('temp/'.$codigo.".png");
    //pega la imagen del codigo de barras en el PDF
    $pdf->Image('temp/'.$codigo.".png", 6 + $saltoHorizontal, 6 + $saltoVertical, 30, 0, "", "");
    //Borra la imagen del codigo de barra
    unlink('temp/'.$codigo.".png");
    
    $pdf->SetFont('Arial','B',6);             
    //TITULOS
    $pdf->Text(8, 20, 'ORIGEN:');
    $pdf->Text(40, 20, 'DESTINO:');
    
    //DATOS ORIGEN
    $pdf->SetXY( 8 + $saltoHorizontal , 21 + $saltoVertical );
    $pdf->MultiCell( 67 , 2 , $clNom , 0 , "L" , 0 );
    $pdf->SetX(8 + $saltoHorizontal);
    $pdf->MultiCell( 67 , 2 , $clDir , 0 , "L" , 0 );
    $pdf->SetX(8 + $saltoHorizontal);
    $pdf->MultiCell( 67 , 2 , $clComuna , 0 , "L" ,0 );
    $pdf->SetX(8 + $saltoHorizontal);
    $pdf->MultiCell( 67 , 2 , "Rut:" . $clRut , 0 , "L" , 0 );
    $pdf->SetX(8 + $saltoHorizontal);
    $pdf->MultiCell( 67 , 2 , "Fono: " . $clTel , 0 , "L" , 0 );
    
    //DATOS CONSIGNATARIO
    $pdf->SetXY( 40 + $saltoHorizontal , 21 + $saltoVertical );
    $pdf->MultiCell( 67 , 2 , $coNom , 0 , "L" , 0 );
    $pdf->SetX(40 + $saltoHorizontal);
    $pdf->MultiCell( 67 , 2 , $coDir , 0 , "L" , 0 );
    $pdf->SetX(40 + $saltoHorizontal);
    $pdf->MultiCell( 67 , 2 , $coComuna , 0 , "L" ,0 );
    $pdf->SetX(40 + $saltoHorizontal);
    $pdf->MultiCell( 67 , 2 , "Rut:" . $coRut , 0 , "L" , 0 );
    $pdf->SetX(40 + $saltoHorizontal);
    $pdf->MultiCell( 67 , 2 , "Fono: " . $coTel , 0 , "L" , 0 );
    
    
    //$pdf->Text(10 + $saltoHorizontal , 22 + $saltoVertical , $idOrden );
    $pdf->Text(70 + $saltoHorizontal , 8 + $saltoVertical , $tipo );
    //Si es sobre 

    if($tipoEncomienda == 4)//Si es factura
    {
        $pdf->Text(70 + $saltoHorizontal , 10 + $saltoVertical , "N?: " . $numFactura  );
    }
    else
    {
        $pdf->Text(70 + $saltoHorizontal , 10 + $saltoVertical , ($j + 1) . "/" . $cantidad );
    }
    
    //$pdf->SetX(55 + $saltoHorizontal);
      //  $pdf->MultiCell(50 , 4,($j + 1) . "/" . $cantidad ,1,"L",0);
}

function getCajas($idOrden)
{
    conectar();
    //Busca todos las cajas que posee la orden y su cantidad
    $sql = sprintf("SELECT denc.codigo_barra
                        FROM encomienda enc , detalle_encomienda denc
                        WHERE enc.id_orden_flete = '%d'
                        AND enc.id_tipo_encomienda = 1
                        AND denc.id_encomienda = enc.id_encomienda",
                        pg_escape_string($idOrden));
       
    $consulta = pg_query($sql)or die("Error en la consulta");
        
    //Cuenta filas afectadas
    $nFilas = pg_num_rows($consulta);
    
    if($nFilas > 0)
    {
        $i = 0;
        while($fila = pg_fetch_array($consulta))
        {
            $caja[$i] = $fila;
            $i++;
        }
        pg_close();
        return $caja;
    }
    pg_close();
    return 0;
}

function getValijas($idOrdenEnvio)
{
    conectar();
     //Busca todos las facturas que posee la orden y su cantidad
    $sql = sprintf("SELECT denc.codigo_barra
                        FROM encomienda enc , detalle_encomienda denc
                        WHERE enc.id_orden_flete = '%s'
                        AND enc.id_tipo_encomienda = 3
                        AND denc.id_encomienda = enc.id_encomienda",
                        pg_escape_string($idOrdenEnvio));
       
    $consulta = pg_query($sql)or die("Error en la consulta");
    //Cuenta filas afectadas
    $nFilas = pg_num_rows($consulta);
    
    if($nFilas > 0)
    {
        $i = 0;
        while($fila = pg_fetch_array($consulta))
        {
            $valija[$i] = $fila;
            $i++;
        }
        pg_close();
        return $valija;
    }
    pg_close();
    
    return 0;
}

function getSobre($idOrdenEnvio)
{
    conectar();
   //Busca todos las facturas que posee la orden y su cantidad
    $sql = sprintf("SELECT denc.codigo_barra
                        FROM encomienda enc , detalle_encomienda denc
                        WHERE enc.id_orden_flete = '%s'
                        AND enc.id_tipo_encomienda = 2
                        AND denc.id_encomienda = enc.id_encomienda",
                        pg_escape_string($idOrdenEnvio));
       
    $consulta = pg_query($sql)or die("Error en la consulta");
    //Cuenta filas afectadas
    $nFilas = pg_num_rows($consulta);
    
    if($nFilas > 0)
    {
        $i = 0;
        while($fila = pg_fetch_array($consulta))
        {
            $sobre[$i] = $fila;
            $i++;
        }
        pg_close();
        return $sobre;
    }
    pg_close();
    return 0;
}

function getDatos($idOrden, $idCliente)
{
    conectar();
    /* Obtiene datos de cliente y consignatario */
    $sql = sprintf("SELECT cl.nombre as clnom,cl.apellido as clape, cl.direccion as cldir,cl.numero_direccion as clnumdir,cl.numero_depto as clnumdepto,
                            cl.telefono1 as cltel1, cl.telefono2 as cltel2, cl.rut as clrut,
                            cl_comu.comuna as clcomuna, of.rut_consignatario as corut, of.nombre_consignatario as conom,
                            of.apellido_consignatario as conape, of.telefono_consignatario as cotel, of.direccion_consignatario as codir,
                            of.numero_direccion as connumdir, of.numero_depto as numdepto, co_comuna.comuna as cocomuna
                    FROM cliente cl, orden_flete of, comuna cl_comu, comuna co_comuna
                    WHERE of.id_orden_flete = '%d'
                    AND co_comuna.id_comuna = of.id_comuna
                    AND cl.id_cliente = '%s'
                    AND cl_comu.id_comuna = cl.id_comuna",
                    pg_escape_string($idOrden),pg_escape_string($idCliente));
        
    //hace consulta
    $consulta = pg_query($sql)or die("Error en la consulta");
    $nFilas = pg_num_rows($consulta);

    //Si encontro los resultados lo pasa a array asociativo
    if($nFilas > 0)
    {
        
        //Array con datos de cliente y consignatario
        $filaDatos = pg_fetch_array($consulta);
        pg_close();
        return $filaDatos;
    }
    else
    {
        pg_close();
        return false;
    }
        
}

//Comprueba que exista el array de ordenes de flete
if( isset($_GET['idOrdenEnvio']) )
{
    
    /* Revisa la cantidad de encomiendas que tiene la orden de envio*/
    $idOrdenEnvio = $_GET['idOrdenEnvio'];// separa el array de ordenes
    //Guarda el id del cliente que esta en la session actual
    $nombre_empresa =  $_SESSION['nombre_empresa'];
    $direccion_empresa =  $_SESSION['direccion_empresa'];
    $fono_empresa =  $_SESSION['fono_empresa'];
    $correo_empresa =  $_SESSION['correo_empresa'];
    
    
    //crea un objeto de pdf
    $pdf = new PDF('P','mm',array(100,130)); //ancho x alto
    
    $pdf->SetMargins(5, 5, 5);
    
    /**********************************************
     *
     * Crear Tickets de cajas
     *
     **********************************************/
   
        
    //obtiene el cliente que hizo esa orden
    $idCliente = getIdCliente($idOrdenEnvio);
        
    $filaDatos = getDatos($idOrdenEnvio, $idCliente) or die("Error al obtener datos de cliente y consignatario");
      
    //Inicializa los contadores
    $countCaja = 0; //Reinicia contador de tickets
    
    $datosCaja = getCajas($idOrdenEnvio);
    
       
    //Proceso para imprimir ticket cajas
    if( $datosCaja )//si hay cajas
    {   
        //Recorre cada encomienda de la orden de flete del tipo caja y crea su ticket
        for($j = 0 ; $j < count($datosCaja) ; $j++)
        {
            
                
            //Guarda codigo asignado 
            $codigo = $datosCaja[$j]['codigo_barra'];
            //Crear ticket de sobre
            getTicketCaja($pdf , count($datosCaja) , $saltoVertical , $saltoHorizontal , $codigo , $idOrden , $filaDatos , 1 , $j , 0);
                              
            //Se contabiliza el ticket
            $countCaja++;
        }
    }
    

    
    
    /**********************************************
     *
     * Crear Tickets de Valijas
     *
     **********************************************/
    
    
    
    //Inicializa los contadores
    $countValija = 0; //Reinicia contador de tickets
    
    $datosValija = getValijas($idOrdenEnvio);   
    
            
    //Proceso para imprimir ticket de sobres
    if( $datosValija)//si hay sobres
    {
    
        //Recorre cada encomienda de la orden de flete del tipo sobre y crea su ticket
        for($j = 0 ; $j < count($datosValija) ; $j++)
        {
           
            
            //Guarda codigo asignado 
            $codigo = $datosValija[$j]['codigo_barra'];
           
            //Crear ticket de sobre
            getTicketCaja($pdf , count($datosValija) , $saltoVertical , $saltoHorizontal , $codigo , $idOrden , $filaDatos , 3 , $j , 0);
                            
            //Se contabiliza el ticket
            $countValija++;
               
        }
    }

    
    /***
     *
     * CREA TICKET DE SOBRE
     *
     */
    
   
    
     //Inicializa los contadores
    $countSobres = 0; //Reinicia contador de tickets
    $datosSobre = getSobre($idOrdenEnvio);
    
    //Proceso para imprimir ticket de sobres
    if( $datosSobre )//si hay sobres
    {
        //Recorre cada encomienda de la orden de flete del tipo sobre y crea su ticket
        for($j = 0 ; $j < count($datosSobre) ; $j++)
        {
            
            
            //Guarda codigo asignado 
            $codigo = $datosSobre[$j]['codigo_barra'];
               
            //Crear ticket de sobre
            getTicketSobre($pdf , count($datosSobre) , $saltoVertical , $saltoHorizontal , $codigo , $idOrden , $filaDatos , 2 , $j , 0);
                              
            //Se contabiliza el ticket
            $countSobres++; 
                
        }
    }
    
    $pdf->Output("Etiqueta.pdf","I");
    pg_close();
        
}

?>